enmSDM工作流
library(enmSdm)
### model red-bellied lemurs
data(mad0)
data(lemurs)
# climate data
bios <- c(1, 5, 12, 15)
clim <- raster::getData('worldclim', var='bio', res=10)
clim <- raster::subset(clim, bios)
clim <- raster::crop(clim, mad0)
# occurrence data
occs <- lemurs[lemurs$species == 'Eulemur rubriventer', ]
occsEnv <- raster::extract(clim, occs[ , c('longitude', 'latitude')])
# background sites
bg <- 2000 # too few cells to locate 10000 background points
bgSites <- dismo::randomPoints(clim, 2000)
bgEnv <- extract(clim, bgSites)
# collate
presBg <- rep(c(1, 0), c(nrow(occs), nrow(bgSites)))
env <- rbind(occsEnv, bgEnv)
env <- cbind(presBg, env)
env <- as.data.frame(env)
preds <- paste0('bio', bios)
regMult <- 1:3 # default values are probably better, but these will be faster
# calibrate MaxEnt model
.ent <- trainMaxEnt(
data=env,
resp='presBg',
preds=preds,
regMult=regMult,
classes='lpq',
verbose=TRUE
)
install.packages("omnibus")
omnibus
# calibrate MaxNet model
net <- trainMaxNet(
data=env,
resp='presBg',
preds=preds,
regMult=regMult,
classes='lpq',
verbose=TRUE
)
# prediction rasters
mapEnt <- predict(ent, clim, type='logistic')
mapNet <- predict(clim, net, type='logistic')
par(mfrow=c(1, 2))
plot(mapEnt, main='MaxEnt')
points(occs[ , c('longitude', 'latitude')])
plot(mapNet, main='MaxNet')
points(occs[ , c('longitude', 'latitude')])
# note the differences between the tuning of the two models...
# this is because maxnet() (used by trainMaxNet())
# uses an approximation:
# (note maxnet() calculates hinges and thresholds differently
# so we will turn them off)
library(SDMtune)
data(bradypus, package='maxnet')
p <- bradypus$presence
data <- bradypus[ , 2:3] # easier to inspect betas
mn <- maxnet::maxnet(p, data,
maxnet::maxnet.formula(p, data, classes='lpq'))
jk <- doJk(mn, metric = "tss", test = test)
mx <- dismo::maxent(data, p,
args=c('linear=true', 'product=true', 'quadratic=true', 'hinge=false',
'threshold=false'))
predMx <- dismo::predict(mx, data)
predMn <- predict(mn, data, type='logistic')
par(mfrow=c(1, 1))
plot(predMx, predMn)
abline(0, 1)
# default: logistic output
predEnt <- raster::predict(ent, presBg)
# default: cloglog output; see ?maxnet for more
predNet <- predict(net, newdata=presBg)
# default: cloglog output
predEnt <- predictMaxEnt(ent, presBg)
# default: cloglog output
predEnt <- predictEnmSdm(ent, presBg)
# default: cloglog output
predNet <- predictEnmSdm(net, presBg)
## 导出:
getwd()
oldip <- installed.packages()[,1]
save(oldip, file="installedPackages.Rdata")